'''
Created on 22/0numNeuroniosIntermediarios/2014

@author: Vitor e Monique
'''
from random import uniform
import xlrd

def criaEntradaTestes(path):
    xls = xlrd.open_workbook(path)
    plan = xls.sheets()[0]
    lista = []
    zDesejado = []
    
    # le arquivo 
    for i in range(500,plan.nrows):
        linha = plan.row_values(i)
        zDesejado.append(linha[4])
        lista.append(linha)
        
    return lista, zDesejado


def criaEntrada5atrib(path, numNeuroniosIntermediarios):
    xls = xlrd.open_workbook(path)
    plan = xls.sheets()[0]
    lista = []
    
    # le arquivo 
    for i in range(0,plan.nrows):
        linha = plan.row_values(i)
        lista.append(linha[3:])
    
    entradas = lista
    
    entradasTeste = []
    zDesejadosTeste = []
    for i in range(500, len(entradas)-1):
        entradasTeste.append(entradas[i])
        zDesejadosTeste.append(entradas[i+1][1])
    
    zDesejados = []
    for i in range(len(entradas)-1):
        zDesejados.append(entradas[i+1][1])
    
    
    omegasEntradaMeio = [None]*len(entradas[0])
    for i in range(len(omegasEntradaMeio)):
        omegasEntradaMeio[i] = []
    tetasMeio = []
    for i in range(len(entradas[0])):
        for j in range(numNeuroniosIntermediarios):
            omegasEntradaMeio[i].append(uniform(-0.5,0.5))
            
    for i in range(numNeuroniosIntermediarios):
        tetasMeio.append(uniform(-0.5,0.5)) 
    
    omegasMeioSaida = []
    tetaSaida = uniform(-0.5,0.5)
    for i in range(numNeuroniosIntermediarios):
        omegasMeioSaida.append(uniform(-0.5,0.5))
    
    return entradas[:500], zDesejados[:500], entradasTeste, zDesejadosTeste, omegasEntradaMeio, omegasMeioSaida, tetasMeio, tetaSaida

def criaEntrada8atrib(path, numNeuroniosIntermediarios):
    xls = xlrd.open_workbook(path)
    plan = xls.sheets()[0]
    lista = []
    
    # le arquivo 
    for i in range(0,plan.nrows):
        linha = plan.row_values(i)
        lista.append(linha)
    
    entradas = lista
    
    zDesejados = []
    for i in range(len(entradas)-1):
        zDesejados.append(entradas[i+1][4])
    
    entradasTeste = []
    zDesejadosTeste = []
    for i in range(500, len(entradas)-1):
        entradasTeste.append(entradas[i])
        zDesejadosTeste.append(entradas[i+1][4])
    
    omegasEntradaMeio = [None]*len(entradas[0])
    for i in range(len(omegasEntradaMeio)):
        omegasEntradaMeio[i] = []
    tetasMeio = []
    for i in range(len(entradas[0])):
        for j in range(numNeuroniosIntermediarios):
            omegasEntradaMeio[i].append(uniform(-0.5,0.5))
            
    for i in range(numNeuroniosIntermediarios):
        tetasMeio.append(uniform(-0.5,0.5)) 
    
    omegasMeioSaida = []
    tetaSaida = uniform(-0.5,0.5)
    for i in range(numNeuroniosIntermediarios):
        omegasMeioSaida.append(uniform(-0.5,0.5))
    
    return entradas[:500], zDesejados[:500], entradasTeste, zDesejadosTeste, omegasEntradaMeio, omegasMeioSaida, tetasMeio, tetaSaida
    
def criaEntrada16atrib(path, numNeuroniosIntermediarios):
    xls = xlrd.open_workbook(path)
    plan = xls.sheets()[0]
    lista = []
    
    # le arquivo 
    for i in range(0,plan.nrows):
        linha = plan.row_values(i)
        lista.append(linha)
    
    entradas = lista
    for i in range(len(entradas)-3):
        for j in range(len(entradas[i+1])):
            entradas[i].append(entradas[i+1][j])
    
    zDesejados = []
    for i in range(len(entradas)-3):
        zDesejados.append(entradas[i+2][4])
    
    lista = []
    for i in range(0,plan.nrows):
        linha = plan.row_values(i)
        lista.append(linha)
    
    entradasTeste = []
    zDesejadosTeste = []
    for i in range(500, len(lista)-1):
        entradasTeste.append(lista[i])
        zDesejadosTeste.append(lista[i+1][4])
    
    omegasEntradaMeio = [None]*len(entradas[0])
    for i in range(len(omegasEntradaMeio)):
        omegasEntradaMeio[i] = []
    tetasMeio = []
    for i in range(len(entradas[0])):
        for j in range(numNeuroniosIntermediarios):
            omegasEntradaMeio[i].append(uniform(-0.5,0.5))
            
    for i in range(numNeuroniosIntermediarios):
        tetasMeio.append(uniform(-0.5,0.5)) 
    
    omegasMeioSaida = []
    tetaSaida = uniform(-0.5,0.5)
    for i in range(numNeuroniosIntermediarios):
        omegasMeioSaida.append(uniform(-0.5,0.5))
    
    return entradas[:499], zDesejados[:499], entradasTeste, zDesejadosTeste, omegasEntradaMeio, omegasMeioSaida, tetasMeio, tetaSaida

def criaEntrada24atrib(path, numNeuroniosIntermediarios):
    xls = xlrd.open_workbook(path)
    plan = xls.sheets()[0]
    lista = []
    
    # le arquivo 
    for i in range(0,plan.nrows):
        linha = plan.row_values(i)
        lista.append(linha)
    
    entradas = lista
    for i in range(len(entradas)-5):
        for j in range(len(entradas[i+1])):
            entradas[i].append(entradas[i+2][j])
        for j in range(len(entradas[i+1])):
            entradas[i].append(entradas[i+4][j])

    
    zDesejados = []
    for i in range(len(entradas)-5):
        zDesejados.append(entradas[i+5][4])
    
    lista = []
    for i in range(0,plan.nrows):
        linha = plan.row_values(i)
        lista.append(linha)
    
    entradasTeste = []
    zDesejadosTeste = []
    for i in range(500, len(lista)-1):
        entradasTeste.append(lista[i])
        zDesejadosTeste.append(lista[i+1][4])
    
    omegasEntradaMeio = [None]*len(entradas[0])
    for i in range(len(omegasEntradaMeio)):
        omegasEntradaMeio[i] = []
    tetasMeio = []
    for i in range(len(entradas[0])):
        for j in range(numNeuroniosIntermediarios):
            omegasEntradaMeio[i].append(uniform(-0.5,0.5))
            
    for i in range(numNeuroniosIntermediarios):
        tetasMeio.append(uniform(-0.5,0.5)) 
    
    omegasMeioSaida = []
    tetaSaida = uniform(-0.5,0.5)
    for i in range(numNeuroniosIntermediarios):
        omegasMeioSaida.append(uniform(-0.5,0.5))
    
    return entradas[:493], zDesejados[:493], entradasTeste, zDesejadosTeste, omegasEntradaMeio, omegasMeioSaida, tetasMeio, tetaSaida